import axios from 'axios';
// 创建axios实例,为所有的 请求url 前面都加上 ‘/api’，方便做 统一代理
const request  = axios.create({
    baseURL: '/api',
    timeout: 10000
})

//给页面携带请求头
request.interceptors.request.use(
    (config)=>{
        let token = localStorage.getItem('token');
        if(token){
            config.headers.Authorization=token;
        }
        return config;
    },
    (err)=>{
       return Promise.reject(err)
    }
)

import router from "@/router/index.js"
import {ElMessage} from "element-plus";
let loginTimeout = null;
//添加响应拦截器
request.interceptors.response.use(
    result=>{
        if(result.data.code === 0){//成功
            return result.data;
        }
        //失败
        ElMessage.error(result.data.message||'服务异常')
        return Promise.reject(result.data);
    }
    ,
    err=>{
        if(err.response.status===401){
            clearTimeout(loginTimeout); // 清除之前的定时器
            loginTimeout = setTimeout(() => {
                ElMessage.error('请先登录');
                router.push({ path: "/login" });
            }, 100); // 设置50ms的延迟，防止重复提示
        }
        else{
            ElMessage.error('服务异常');
        }
        return Promise.reject(err);//异步的状态转化成失败的状态
    }
)


export default request;
